home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / xobbs.arc / makhdrfil.c < prev    next >
C/C++ Source or Header  |  1989-05-03  |  2KB  |  65 lines

  1. /*MAKHDRFIL.C    Makes new header file for XOBBS   W2XO, 4-4-89  */
  2. /*Version 1.3 */
  3.  
  4. #define MAIN 1
  5.  
  6. #include "xobbs.h"
  7.  
  8. main()
  9. {
  10.     FILE *fp;
  11.     int i,hfd,fd2;
  12.     char s[30],*bp,*cp;
  13.     char hdr[130],c,filnam[15];
  14.     char hdr_num[130];
  15.     char buf[4096];
  16.     char htmpl[30];
  17.     
  18.     getconfig();
  19.  
  20.  
  21.     sprintf(prinbuf,"ls %s | sort -rn",maildir);
  22.     fp=popen(prinbuf,"r");        /*get the mail directory*/
  23.     i=0;
  24.  
  25.     while(((c=fgetc(fp)) != EOF) && (i < 4095))        /*read in the names*/
  26.         buf[i++]=c;
  27.  
  28.     buf[i]='\0';        /*terminate the names*/
  29.     pclose(fp);            /*close the pipe*/
  30.     bp=buf;            /*point to the first name in the buffer*/
  31.  
  32.     
  33.     sprintf(prinbuf,"mv %s %soldhdr",hdrfile,homedir);
  34.     system(prinbuf);
  35.  
  36.     if((hfd=open(hdrfile,O_WRONLY | O_CREAT,0x1b6)) < 0){
  37.         sprintf(prinbuf,"mkhdrfil: Can't open temp header file\n");
  38.         perror(prinbuf);
  39.     }
  40.         /*loop and service each file in the mail directory*/
  41.     for(;;){
  42.     if(*bp=='\n') bp++;    /*if sitting on a lf, increment*/
  43.     if(*bp=='\0') break;    /*if end of string, leave*/
  44.         cp=filnam;        /*point to the filname space*/
  45.     while(*bp != '\n') *cp++ = *bp++; /*read up to next lf into filnam*/
  46.     *cp='\0';            /*terminate the filname*/
  47.  
  48.         sprintf(prinbuf,"%s%s",maildir,filnam);    /*file name in s*/
  49.         if((fd2=open(prinbuf,O_RDONLY)) < 0){
  50.             sprintf(prinbuf,"makhdrfil: Cant open message file no.%s\n",filnam);
  51.             perror(prinbuf);
  52.         }
  53.          else
  54.     {
  55.         fgetline(fd2,hdr);
  56.             sprintf(hdr_num,"%-5s %-85.85s\n",filnam,hdr);
  57.             write(hfd,hdr_num,92);        /*write out the header file line*/
  58.         close(fd2);
  59.         }
  60.     }
  61.  
  62.     close(hfd);                /*close the header file*/
  63.  
  64. }
  65.